#include <iostream>
#include <vector>
using namespace std;

struct Block {
    int key;    // 块的最大值
    int start;  // 块的起始地址
    int end;    // 块的结束地址
};

int blockSearch(int arr[], int n, int kval, vector<Block>& blocks) {
    // 确定目标值所在的块
    int blockIndex = -1;
    for (int i = 0; i < blocks.size(); ++i) {
        if (kval <= blocks[i].key) {
            blockIndex = i;
            break;
        }
    }
    
    // 如果没有找到合适的块，返回0
    if (blockIndex == -1) {
        return 0;
    }
    
    // 在确定的块内进行顺序查找
    for (int i = blocks[blockIndex].start; i <= blocks[blockIndex].end; ++i) {
        if (arr[i] == kval) {
            return i + 1; // 返回位置（从1开始计数）
        }
    }
    
    return 0; // 未找到
}

int main() {
    int n, kval;
    cin >> n;
    
    // 创建一个大小为 n 的数组
    int arr[n];
    
    // 输入数组元素
    for (int i = 0; i < n; ++i) {
        cin >> arr[i];
    }
    
    // 输入要查找的数值
    cin >> kval;
    
    // 分块
    int blockSize = n / 3;
    vector<Block> blocks;
    
    for (int i = 0; i < 3; ++i) {
        Block block;
        block.start = i * blockSize;
        block.end = (i == 2) ? n - 1 : (i + 1) * blockSize - 1;
        block.key = arr[block.end];
        blocks.push_back(block);
    }
    
    // 使用分块查找
    int result = blockSearch(arr, n, kval, blocks);
    
    // 输出结果
    cout << result ;
    
    return 0;
}